package redis

import (
	"context"
	"fmt"
	"github.com/redis/go-redis/v9"
	"github.com/zeromicro/go-zero/core/logx"
)

type Conf struct {
	Ip       string
	Port     string
	Db       int
	Password string
}

type Redis struct {
	Client *redis.Client
}

func NewRedis(ctx context.Context, conf *Conf) (*Redis, error) {
	// 创建一个 Redis 客户端
	client := redis.NewClient(&redis.Options{
		Addr:     conf.Ip + ":" + conf.Port, // Redis 服务器地址和端口
		Password: conf.Password,             // Redis 服务器密码（如果有的话）
		DB:       conf.Db,                   // 使用的数据库编号（默认为 0）
	})

	// 测试连接
	_, err := client.Ping(ctx).Result()
	if err != nil {
		fmt.Println("Error connecting to Redis:", err)
	}
	return &Redis{Client: client}, err
}

func MustNewRedis(ctx context.Context, conf *Conf) *Redis {
	newRedis, err := NewRedis(ctx, conf)
	if err != nil {
		panic(err)
	}
	logx.Infof("redis connected")
	return newRedis
}
